//============================================================================================
/**
 * @file	mailbox.c
 * @brief	メールボックス画面
 * @author	Hiroyuki Nakamura
 * @date	09.01.30
 */
//============================================================================================
#include "common.h"

#include "mb_main.h"
#include "mb_seq.h"



//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：初期化
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT MailBoxProc_Init( PROC * proc, int * seq )
{
	MAILBOX_SYS_WORK * syswk;

	OS_Printf( "↓↓↓↓↓　メールボックス処理開始　↓↓↓↓↓\n" );

	sys_CreateHeap( HEAPID_BASE_APP, HEAPID_MAILBOX_SYS, 0x10000 );

	syswk = PROC_AllocWork( proc, sizeof(MAILBOX_SYS_WORK), HEAPID_MAILBOX_SYS );
	MI_CpuClear8( syswk, sizeof(MAILBOX_SYS_WORK) );

	syswk->dat      = PROC_GetParentWork( proc );
	syswk->config   = SaveData_GetConfig( syswk->dat->savedata );
	syswk->sv_mail  = SaveData_GetMailBlock( syswk->dat->savedata );
	syswk->next_seq = MBSEQ_MAINSEQ_START;

	return PROC_RES_FINISH;
}

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：メイン
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT MailBoxProc_Main( PROC * proc, int * seq )
{
	MAILBOX_SYS_WORK * syswk = PROC_GetWork( proc );

	if( MBSEQ_Main( syswk, seq ) == FALSE ){
		return PROC_RES_FINISH;
	}

	return PROC_RES_CONTINUE;
}

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：終了
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT MailBoxProc_End( PROC * proc, int * seq )
{
	PROC_FreeWork( proc );

	sys_DeleteHeap( HEAPID_MAILBOX_SYS );

	OS_Printf( "↑↑↑↑↑　メールボックス処理終了　↑↑↑↑↑\n" );

	return PROC_RES_FINISH;
}